/**
 * 文件流导出
 * @param {blob} data blob流文件
 * @param {string} filename 文件名称
 * @param {string} filetype 文件类型，默认excel;text-文本,json-json,csv-csv,pdf-pdf,docx-docx,excel-excel,ppt-ppt,png-png,jpeg-jpeg
 */
export const exportcontent = (data: any, filename: string, filetype?: string='xlsx') => {
  // 定义导出文件类别
  let typeStr={
     'text':'text/plain;charset=utf-8',  // 文本文件
     'json':'application/json;charset=utf-8',  // json文件
     'csv':'text/csv;charset=utf-8', // csv文件
     'pdf':'application/pdf',  // pdf文件
     'docx':'application/vnd.openxmlformats-officedocument.wordprocessingml.document',  // word文件
     'excel':'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',  // excel文件
     'ppt':'application/vnd.openxmlformats-officedocument.presentationml.presentation', // ppt文件
     'png':'image/png',  // png文件
     'jpeg':'image/jpeg'  // jpeg文件} 
     
  }
  // 配置相关文件二进制流
  let blob = new Blob([data], {
    type: typeStr[filetype]
  })

  const fileName = filename+'.'+filetype // 文件名

  // IE:通过 msSaveOrOpenBlob 方法实现文件下载。
  // 现代浏览器：通过 Blob 和 <a> 标签结合的方式实现文件下载。

  if (window.navigator && (window.navigator as any).msSaveOrOpenBlob) {
    (window.navigator as any).msSaveOrOpenBlob(blob, fileName) // 判断IE浏览器，提供保存和打开按钮
  } else {
    let objectUrl = (window.URL || window.webkitURL).createObjectURL(blob) // 使用URL标准和webitURL旧版创建一个临时URL指向Blob对象
    let downFile = document.createElement('a') // 创建a标签
    downFile.style.display = 'none' // 隐藏a标签
    downFile.href = objectUrl // a链接跳转地址
    downFile.download = fileName // 指定download下载后文件名
    document.body.appendChild(downFile) // 将a添加文档对象中
    console.dir(downFile) // 打印文件
    downFile.click() // 触发a链接
    document.body.removeChild(downFile) // 将a链接从文档中移除 
    window.URL.revokeObjectURL(objectUrl) // 释放临时URL
  }
}